<template>
  <!--1.在组件中有且仅有一个根标签-->
  <div>
    <!--
      el-table：是elementUi定义的表格标签
        data：表格的数据来源属性，值就是我们在模型层绑定的数据集合
        border：边框的线
        el-table-column：一个此标签就代表一列
          prop：data中数据集合的每条数据中的某个字段，说白了就是对象的字段名称
          label：列头名称
          width：一个字段有多宽，最后一列一定不要加此属性，加了列表非常丑
    -->
    <el-table
        :data="tableData"
        border
        style="width: 100%">
      <el-table-column
          prop="id"
          label="编号"
          width="180">
      </el-table-column>
      <el-table-column
          prop="name"
          label="姓名"
          width="180">
      </el-table-column>
      <el-table-column
          prop="phone"
          label="电话"
          width="180">
      </el-table-column>
      <el-table-column
          prop="email"
          label="邮箱"
          width="180">
      </el-table-column>
      <el-table-column
          prop="createTime"
          label="日期"
          width="180">
      </el-table-column>
      <el-table-column
          prop="address"
          label="地址">
      </el-table-column>
    </el-table>
    <!--el-pagination：elementUI提供的分页组件
          background：带背景色
          layout：布局
          total：分页总条数
          align：位置
    -->

    import axios from "axios";

    <el-pagination
      background
      layout="sizes,prev, pager, next"
      :total="total"
      align="right"
      :current-page="currentPage"
      :page-size="pageSize"
      @current-change="goPage"
      :page-sizes="[5, 10, 15, 20]">
    </el-pagination>
  </div>
</template>

<script>
/*以后在单页面组件中，所有的JS代码都写在script标签中*/


// Vue实例代码
export default {
  name: 'HelloWorld',
  data () {
    return {
      tableData: [],
      currentPage:1,
      pageSize:5,
      total:0
    }
  },
  mounted() {
    // 发送AJAX请求
    this.list();
    // this.currentPage + this.pageSize
    this.tableData = [];
  },
  methods:{
    // 根据用户点击的页码发起请求查询当前页数据
    goPage(currentPage){
     this.currentPage = currentPage;
     this.list();
    },
    list(){
      // 在vue中不是直接像jQuery那样 $.请求方式
      // 而是使用的Axios，但是他并不在vue的核心中
      axios.post("/user/list",{"currentPage":this.currentPage,"pageSize":this.pageSize})
          .then(result=>{
            // 给模型层中的表单字段赋值
            this.tableData = result.data.data;
            // 给模型层中的总条数赋值
            this.total = result.data.totals;
          })
          .catch(error=>{
            console.log(error);
            alert("系统繁忙，请稍后重试！")
          })
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--scoped：表示当前样式仅作用域当前组件-->
<style scoped>

</style>
